package mylab.starters.mybatis.template;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import mylab.starters.mybatis.injector.methods.InsertBatch;
import mylab.starters.mybatis.injector.methods.InsertIgnore;
import mylab.starters.mybatis.injector.methods.InsertIgnoreBatch;
import org.apache.ibatis.annotations.Param;

import java.util.List;


public interface SuperMapper<E> extends BaseMapper<E> {
    /**
     * 插入数据，如果中已经存在相同的记录，则忽略当前新数据
     * {@link InsertIgnore}
     *
     * @param entity 实体类
     * @return 影响条数
     */
    int insertIgnore(E entity);

    /**
     * 批量插入数据，如果中已经存在相同的记录，则忽略当前新数据
     * {@link InsertIgnoreBatch}
     *
     * @param entityList 实体类列表
     * @return 影响条数
     */
    int insertIgnoreBatch(List<E> entityList);


    /**
     * 批量插入数据，如果中已经存在相同的记录，则忽略当前新数据
     * {@link InsertBatch}
     *
     * @param entityList 实体类列表
     * @return 影响条数
     */
    int insertBatch(List<E> entityList);

    /**
     * 全量修改所有字段
     *
     * @param entity 实体
     * @return 修改数量
     */
    int updateAllById(@Param(Constants.ENTITY) E entity);
}
